package com.algorithm.array;

import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;

import java.util.Stack;

@Slf4j
public class ArraySulotion03 {
    public int findKthLargest(int[] nums, int k) {
        Stack<Integer> a = new Stack<>();
        for (int j = 0; j < k; j++) {
            int tmp = 0;
            int max = 0;
            for (int i = 0; i < nums.length; i++) {
                if (a.contains(i)){
                    continue;
                }
                if (nums[i]>= max){
                    max = nums[i];
                    tmp = i;
                }
            }
            a.add(tmp);
        }
        return nums[a.pop()];
    }

    @Test
    @DisplayName("给定整数数组 nums 和整数 k，请返回数组中第 k 个最大的元素。请注意，你需要找的是数组排序后的第 k 个最大的元素，而不是第 k 个不同的元素。")
    public void test(){
        int [] nums = {2,1};
        int kthLargest = findKthLargest(nums, 2);
        log.info("this is result");
    }


    public int findKthLargest1(int[] nums, int k) {
        for (int j = 0; j < nums.length; j++) {
            for (int i = j; i < nums.length; i++) {
                if (nums[i]>= nums[j]){
                    int tmp = nums[i];
                    nums[i] = nums[j];
                    nums[j] = tmp;
                }
            }
        }
        return nums[k-1];
    }

    @Test
    @DisplayName("给定整数数组 nums 和整数 k，请返回数组中第 k 个最大的元素。请注意，你需要找的是数组排序后的第 k 个最大的元素，而不是第 k 个不同的元素。")
    public void test1(){
        int [] nums = {3,2,1,5,6,4};
        int kthLargest1 = findKthLargest1(nums, 2);
        log.info("result is ");
    }
}
